Hace poco a modo de tomar un descanso, he retomado el desarrollo de una aplicación web para compartir archivos: ["Almacén de archivos"](https://botadero.rmgss.net).

![botadero300x300.png](/static/imgs/posts/botadero300x300.png)

## Pequeña reseña

Esta pequeña aplicación web la fui escribiendo a modo de aprender python [flask](https://palletsprojects.com/p/flask/) hace algunos años. La finalidad es tener un sitio web donde entras y subes uno o más archivos que quieres compartir en tu red local o por internet sin necesidad de cuentas de usuarios. Aunque existen muchos sitios de este tipo, la idea era construirla como un servicio para [La Otra Red](https://laotra.red) y originalmente la llamamos "el Botadero" a modo de juego.

Terminé una versión básica funcional y luego de que la probamos, paré el desarrollo por casi dos años. Pero siempre era divertido programarla y hace unos días volví a retomar el desarrollo y puedo decir que sigue siendo divertido.

## Retomando el desarrollo

La primera tarea fue actualizarla a python3 y también sus dependencias que costo un poco, luego ordenar el código y hacerlo más extendible que fue el trabajo principal.

El código y otra documentación esta publicado en:

- [https://notabug.org/strysg/botadero](https://notabug.org/strysg/botadero)
- [https://github.com/strymsg/almacenArchivos](https://github.com/strymsg/almacenArchivos)

Hay una instancia en [https://botadero.rmgss.net](https://botadero.rmgss.net)

### Idea del desarrollo

La interfaz principal permite seleccionar archivos de tu dispositivo y subirlos, luego estos aparecen en una caja donde al hacerles click se los puede descargar. Después de un tiempo (configurable) estos se borran automáticamente y no queda rastro de estos. Otras características importantes son:

- Verifica que no se suban archivos duplicados, para esto verifica el nombre y contenido obteniendo el digesto con un algoritmo como `sha1`. 
- Verifica que exista almacenamiento disponible antes de guardar los archivos de manera temporal.
- Toda estas características deben ser configurables.
- El sitio debe ser ligero.
- La instalación debe ser sencilla.

#### Pendientes

Para hacerlo más flexible, el sitio debería:

- Permitir proteger la descarga de archivos antes de subirlos con una contraseña.
- Permitir eliminar los archivos si estos se han subido con un contraseña.
- Mejorar la interfaz en dispositivos móviles y en general.
- Optimizar proceso de subida.
- Hacerlo el código más legible y extendible.
- Corregir errores.

Espero alguien se apunte a ayudar con el desarrollo o de cualquier otra forma— `compartir es bueno ;-)`
